In [1]:
from sympy import *
init_printing() #muestra símbolos más agradab
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import numpy as np
R=lambda n,d: Rational(n,d)

Verificar si un número es o no primo


In [2]:
def testprimo(n):
    z=True
    i=3
    if n % 2==0 and n>2:
        i=sqrt(n)+1
        z=False
    while i<=sqrt(n) and z==True:
        r=n % i
        if r==0:
            z=False
        else:
            i=i+2
    
    return(z)    
        
        
testprimo(6)


Out[2]:
False

In [46]:
testprimo(127)


Out[46]:
True

Congetura de Goldbach


In [30]:
def conjGoldbach(n):
    salida=0
    a=0
    b=0
    if n<4 or (n % 2)==1:
        salida=1
        a="El número es menor que 4 o el número no es par"
        b=0
    else:
        j=2
        while salida==0 and j<=n/(2.0):
            if testprimo(j)==True and testprimo(n-j)==True:
                a=j
                b=n-j
                salida=1
            j=j+1    
    return([a,b])
            
conjGoldbach(137)


Out[30]:
['El número es menor que 4 o el número no es par', 0]

In [40]:
conjGoldbach(22)


Out[40]:
$$\left [ 3, \quad 19\right ]$$